home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 05 Programming / RS232.ARC / %cdGETS.C < prev    next >
Text File  |  2019-04-13  |  2KB  |  108 lines

  1. /*
  2.     ═GETS.C
  3.  
  4.     TIME ESTIMATE FORMULA IS:
  5.  
  6.                    TIC = █ ═INUTES * 70 ▌
  7.  
  8.     WHERE TIC IS THE ERROR VALUE TO ALLOW FOR TIME-OUTS
  9.     AND ═INUTES IS THE TOTAL TIME IN MINUTES TO ALLOW USER
  10.     TO HAVE IDLE.
  11.  
  12.     STRñIN(STR,MODE,MAX,MAXTIME)
  13.     CHAR STR[];
  14.     UNSIGNED MODE,   0 TRUE ASCII 1 PETASCII
  15.              MAX,    NUMBER OF CHARACTERS 
  16.              MAXTIME;
  17.  
  18.     MAXTIME IS IN MINUTES RANGE 1..3 
  19.     ╟╧ ╬╧ ╚╔╟╚┼╥ ╘╚┴╬ 3 DECIMAL ╧╥ ┼╠╙┼!
  20. */
  21.  
  22. #INCLUDE <STDIO.H>
  23.  
  24. #INCLUDE <DEFN.H>
  25.  
  26. #INCLUDE <TERM.H>
  27.  
  28.  
  29. EXTERN CHAR ═Oñ╔NKEY();
  30. EXTERN CHAR INKEY();
  31.  
  32.  
  33.  
  34.  
  35. CHAR ═O╟ET╦EY(MODE)
  36.     CHAR CH=0;
  37.     CHAR CH2=0;
  38.     CH=═Oñ╔NKEY(MODE);
  39.     IF ( ( (CH2=INKEY()) ╬╧╘ñ┼╤╒┴╠ ┼╙├) ┴╬─ (CH2) )
  40.         CH=CH2;
  41.     PUTCHAR('ñ');
  42.     PUTCHAR(0X9D);
  43.     RETURN CH;
  44.  
  45.  
  46.  
  47.  
  48. CHAR ECHO(MODE)
  49.     CHAR CH=0;
  50.     CH = ═O╟ET╦EY(MODE);
  51.     IF ( (CH ╬╧╘ñ┼╤╒┴╠ '\N') ┴╬─ (CH) )
  52.         █
  53.             PUTCHAR(CH);
  54.             ═OñPUTC(CH,MODE);
  55.         ▌
  56.     ELSE IF (CH ╔╙ñ┼╤╒┴╠ '\N')
  57.           █
  58.             PUTCHAR(' ');
  59.             PUTCHAR(CH);
  60.             ═OñPUTC(' ',MODE);
  61.             ═OñPUTC(CH,MODE);
  62.           ▌
  63.     RETURN CH;
  64.  
  65.  
  66.  
  67.  
  68. UNSIGNED ═GETS(STR,MODE,MAX,MAXTIME)
  69. CHAR STR[];
  70. UNSIGNED MODE;
  71. UNSIGNED MAX;
  72. UNSIGNED MAXTIME;
  73.     CHAR CHIN;  
  74.     UNSIGNED COUNT=0;
  75.     UNSIGNED ERR=0;
  76.     UNSIGNED MAXERRS;
  77.     MAXERRS = ( (MAXTIME * 70) * 256);
  78.     WHILE( (COUNT<MAX) ┴╬─ (ERR<MAXERRS)  )
  79.         █
  80.             CHIN = ECHO(MODE);
  81.             SWITCH(CHIN)
  82.             █
  83.                 CASE 0X00 : ERR++; BREAK;
  84.                 CASE 0X14 : ERR=0;
  85.                             IF (COUNT)
  86.                             █  COUNT--;    
  87.                                STR[COUNT]=╬╒╠╠; 
  88.                             ▌ BREAK; 
  89.                 CASE 0X0D : ERR=0;
  90.                             MAX=COUNT; BREAK;
  91.                 DEFAULT   : ERR=0; STR[COUNT++]=CHIN;
  92.             ▌
  93.             STR[COUNT]= ╬╒╠╠;
  94.             IF (INKEY() ╔╙ñ┼╤╒┴╠ ┼╙├)
  95.                 RETURN COUNT;
  96.         ▌
  97.     IF (ERR)
  98.         RETURN ┼╧╞;
  99.     RETURN COUNT;
  100.  
  101.  
  102.